import { defineStore } from 'pinia'
import { computed } from 'vue'
import { useUserStore } from './user'

export const useTokenStore = defineStore(
  'token',
  () => {
    const userStore = useUserStore()

    /**
     * 检查是否已登录（通过判断用户id是否存在）
     */
    const hasLogin = computed(() => {
      const user = JSON.parse(uni.getStorageSync('user') || '{}')
      return user && user.userInfo?.userId
    })

    /**
     * 退出登录 并 删除用户信息
     */
    const logout = async () => {
      try {
        // TODO 实现自己的退出登录逻辑
        // 可以调用后端退出接口
      }
      catch (error) {
        console.error('退出登录失败:', error)
      }
      finally {
        // 清除用户信息
        console.log('退出登录-清除用户信息')
        uni.removeStorageSync('user')
        userStore.clearUserInfo()
      }
    }

    return {
      // 认证状态判断
      hasLogin,

      // API方法
      logout,
    }
  },
  {
    // 不需要持久化token，因为我们使用id作为登录状态判断
  },
)
